import csv
import os

def main():
    # 清屏
    os.system('cls' if os.name == 'nt' else 'clear')

# 主菜单模块
def menu():
    main() # 清屏

    # 提供以下选项
    print("===== 主菜单 =====")
    print("1. 进入计算器")
    print("2. 生成CSV文件表头")
    print("3. 退出程序")

    # 选择操作
    choice = input("请选择操作: ")
    main() # 清屏

    return choice

# BMR计算模块
def count():
    # 请输入性别、年龄、身高、体重
    gender = input("请输入性别(男或女): ")
    age = int(input("请输入年龄: "))
    height = float(input("请输入身高(cm): "))
    weight = float(input("请输入体重(kg): "))

    # 计算男生BMR
    if gender == "男":
        bmr = 13.7 * weight + 5.0 * height - 6.8 * age + 66
    # 计算女生BMR
    elif gender == "女":
        bmr = 9.6 * weight + 1.8 * height - 4.7 * age + 655
    else:
        print("输入性别错误！")
        return

    # 使用格式化，保留2位小数输出bmr
    print("BMR指数为: %.2f" % bmr)

    # 使用python自带函数file()，通过追加写模式写入csv生成数据
    with open('bmr.csv', 'a', newline='') as file:
        writer = csv.writer(file)
        # 写入数据
        writer.writerow([gender, age, height, weight, bmr])

    # 增加容错机制
    while True:
        choice = input("是否继续计算？(y/n)")
        if choice == "y":
            main() # 清屏
            count()
            break
        elif choice == "n":
            break

# 生成BMR计算数据的CSV文件和表头
def list_start():
    # 增加容错机制
    while True:
        choice = menu()
        # 选择1，则跳转到count()模块
        if choice == "1":
            main() # 清屏
            count()
        # 选择2，则进行生成bmr文件
        elif choice == "2":
            # 判断文件是否存在以及是否为空
            if os.path.isfile('bmr.csv') and os.stat('bmr.csv').st_size != 0:
                file_exists = True
            else:
                file_exists = False

            # 使用python自带函数file()，通过只写模式写入csv数据
            with open('bmr.csv', 'w', newline='') as file:
                writer = csv.writer(file)
                # 如果不为空，则写入表头
                if not file_exists:
                    writer.writerow(["性别", "年龄", "身高", "体重", "BMR指数"])
                    print("CSV文件表头已生成！")
                input("按任意键继续...")
        # 选择3，则进行退出程序
        elif choice == "3":
            print("程序已退出！")
            input("按任意键继续...")
            break
        else:
            print("输入有误！请重新输入.")
            input("按任意键继续...")

# 启动程序的入口函数
if __name__ == '__main__':
    list_start()
